package com.xiaoxu.privatechat.annotion;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @description 实体检验自定义注解类，根据我们自定义的注解去检查实体各个字段是否在规定的值内
 * @author xiaoxu
 * @date 2023/2/13
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ValidateEntity {

	/**
	 * @description 是否必须
	 * @return boolean
	 */
	 boolean required() default false;

	/**
	 * @description 是否检验检验长度
	 * @return boolean
	 */
	 boolean requiredLeng() default false;

	/**
	 * @description 是否检验最大值
	 * @return boolean
	 */
	boolean requiredMaxValue() default false;

	/**
	 * @description 是否检验最小值
	 * @return boolean
	 */
	 boolean requiredMinValue() default false;

	/**
	 * @description 最大长度
	 * @return int
	 */
	int maxLength() default -1;

	/**
	 * @description 最小长度
	 * @return int
	 */
	 int minLength() default -1;

	/**
	 * @description  最大值
	 * @return long
	 */
	long maxValue() default -1;

	/**
	 * @description 最小值
	 * @return long
	 */
	 long minValue() default -1;

	/**
	 * @description 值为null时的错误提示信息
	 * @return String
	 */
	String errorRequiredMsg() default "";

	/**
	 * @description 最小长度不满足时的提示信息
	 * @return String
	 */
	 String errorMinLengthMsg() default "";

	/**
	 * @description 最大长度不满足时的提示信息
	 * @return String
	 */
	String errorMaxLengthMsg() default "";

	/**
	 * @description 最小值不满足时的提示信息
	 * @return String
	 */
	 String errorMinValueMsg() default "";

	/**
	 * @description 最大值不满足时的提示信息
	 * @return String
	 */
	String errorMaxValueMsg() default "";
}
